package cn.wgx.modules.sys.entity;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

public class SysPermissionExample {

    /**
     * @mbg.generated Mon Jul 08 14:42:40 CST 2019
     */
    public SysPermissionExample() {
        oredCriteria = new ArrayList<Criteria>();
    }

    /**
     * @mbg.generated Mon Jul 08 15:06:42 CST 2019
     */
    protected String orderByClause;

    /**
     * @mbg.generated Mon Jul 08 15:06:42 CST 2019
     */
    protected List<Criteria> oredCriteria;

    /**
     * @mbg.generated Mon Jul 08 15:06:42 CST 2019
     */
    protected boolean distinct;

    /**
     * @mbg.generated Mon Jul 08 15:06:42 CST 2019
     */
    public Criteria or() {
        Criteria criteria = createCriteriaInternal();
        oredCriteria.add(criteria);
        return criteria;
    }

    /**
     * @mbg.generated Mon Jul 08 15:06:42 CST 2019
     */
    public void setOrderByClause(String orderByClause) {
        this.orderByClause = orderByClause;
    }

    /**
     * @mbg.generated Mon Jul 08 15:06:42 CST 2019
     */
    protected Criteria createCriteriaInternal() {
        Criteria criteria = new Criteria();
        return criteria;
    }

    /**
     * @mbg.generated Mon Jul 08 15:06:42 CST 2019
     */
    public void or(Criteria criteria) {
        oredCriteria.add(criteria);
    }

    /**
     * @mbg.generated Mon Jul 08 15:06:42 CST 2019
     */
    public boolean isDistinct() {
        return distinct;
    }

    /**
     * @mbg.generated Mon Jul 08 15:06:42 CST 2019
     */
    public String getOrderByClause() {
        return orderByClause;
    }

    /**
     * @mbg.generated Mon Jul 08 15:06:42 CST 2019
     */
    public List<Criteria> getOredCriteria() {
        return oredCriteria;
    }

    /**
     * @mbg.generated Mon Jul 08 15:06:42 CST 2019
     */
    public void setDistinct(boolean distinct) {
        this.distinct = distinct;
    }

    /**
     * @mbg.generated Mon Jul 08 15:06:42 CST 2019
     */
    public Criteria createCriteria() {
        Criteria criteria = createCriteriaInternal();
        if (oredCriteria.size() == 0) {
            oredCriteria.add(criteria);
        }
        return criteria;
    }

    /**
     * @mbg.generated Mon Jul 08 15:06:42 CST 2019
     */
    public void clear() {
        oredCriteria.clear();
        orderByClause = null;
        distinct = false;
    }

    /**
     * @mbg.generated do_not_delete_during_merge Mon Jul 08 15:06:42 CST 2019
     */
    public static class Criteria extends GeneratedCriteria {

        protected Criteria() {
            super();
        }
    }

    /**
     * @mbg.generated Mon Jul 08 15:06:42 CST 2019
     */
    protected abstract static class GeneratedCriteria {

        protected GeneratedCriteria() {
            super();
            criteria = new ArrayList<Criterion>();
        }

        protected List<Criterion> criteria;

        public Criteria andMenu_flagBetween(String value1, String value2) {
            addCriterion("t.menu_flag between", value1, value2, "menu_flag");
            return (Criteria) this;
        }

        public Criteria andStatusNotBetween(String value1, String value2) {
            addCriterion("t.status not between", value1, value2, "status");
            return (Criteria) this;
        }

        public Criteria andLevelLessThanOrEqualTo(Integer value) {
            addCriterion("t.level <=", value, "level");
            return (Criteria) this;
        }

        public Criteria andPermissionNameLikeInsensitive(String value) {
            addCriterion("upper(t.permissionName) like", value.toUpperCase(), "permissionName");
            return (Criteria) this;
        }

        public Criteria andParent_keysLike(String value) {
            addCriterion("t.parent_keys like", value, "parent_keys");
            return (Criteria) this;
        }

        public Criteria andBlank_flagLike(String value) {
            addCriterion("t.blank_flag like", value, "blank_flag");
            return (Criteria) this;
        }

        public Criteria andUrlIsNull() {
            addCriterion("t.url is null");
            return (Criteria) this;
        }

        public Criteria andParent_keysNotLike(String value) {
            addCriterion("t.parent_keys not like", value, "parent_keys");
            return (Criteria) this;
        }

        public Criteria andRemarkIsNotNull() {
            addCriterion("t.remark is not null");
            return (Criteria) this;
        }

        public Criteria andCreateDateNotBetween(Date value1, Date value2) {
            addCriterion("t.createDate not between", value1, value2, "createDate");
            return (Criteria) this;
        }

        public Criteria andPermissionNameBetween(String value1, String value2) {
            addCriterion("t.permissionName between", value1, value2, "permissionName");
            return (Criteria) this;
        }

        protected void addCriterion(String condition, Object value, String property) {
            if (value == null) {
                throw new RuntimeException("Value for " + property + " cannot be null");
            }
            criteria.add(new Criterion(condition, value));
        }

        public Criteria andLevelNotBetween(Integer value1, Integer value2) {
            addCriterion("t.level not between", value1, value2, "level");
            return (Criteria) this;
        }

        public Criteria andPermissionKeyNotBetween(String value1, String value2) {
            addCriterion("t.permissionKey not between", value1, value2, "permissionKey");
            return (Criteria) this;
        }

        public Criteria andPermissionNameIsNull() {
            addCriterion("t.permissionName is null");
            return (Criteria) this;
        }

        public Criteria andUpdateDateIn(List<Date> values) {
            addCriterion("t.updateDate in", values, "updateDate");
            return (Criteria) this;
        }

        public Criteria andCreateUserIdIn(List<Integer> values) {
            addCriterion("t.createUserId in", values, "createUserId");
            return (Criteria) this;
        }

        public Criteria andUpdateUserIdIn(List<Integer> values) {
            addCriterion("t.updateUserId in", values, "updateUserId");
            return (Criteria) this;
        }

        public Criteria andParent_keyNotBetween(String value1, String value2) {
            addCriterion("t.parent_key not between", value1, value2, "parent_key");
            return (Criteria) this;
        }

        public Criteria andCreateUserIdNotIn(List<Integer> values) {
            addCriterion("t.createUserId not in", values, "createUserId");
            return (Criteria) this;
        }

        public Criteria andStatusNotEqualTo(String value) {
            addCriterion("t.status <>", value, "status");
            return (Criteria) this;
        }

        public Criteria andUrlLessThan(String value) {
            addCriterion("t.url <", value, "url");
            return (Criteria) this;
        }

        public Criteria andIconIsNull() {
            addCriterion("t.icon is null");
            return (Criteria) this;
        }

        public Criteria andParent_keyGreaterThan(String value) {
            addCriterion("t.parent_key >", value, "parent_key");
            return (Criteria) this;
        }

        public Criteria andSortNotBetween(Integer value1, Integer value2) {
            addCriterion("t.sort not between", value1, value2, "sort");
            return (Criteria) this;
        }

        public Criteria andLevelGreaterThan(Integer value) {
            addCriterion("t.level >", value, "level");
            return (Criteria) this;
        }

        public Criteria andCreateUserIdBetween(Integer value1, Integer value2) {
            addCriterion("t.createUserId between", value1, value2, "createUserId");
            return (Criteria) this;
        }

        public Criteria andCreateDateNotEqualTo(Date value) {
            addCriterion("t.createDate <>", value, "createDate");
            return (Criteria) this;
        }

        public List<Criterion> getCriteria() {
            return criteria;
        }

        public Criteria andIconLessThan(String value) {
            addCriterion("t.icon <", value, "icon");
            return (Criteria) this;
        }

        public Criteria andMethodGreaterThanOrEqualTo(String value) {
            addCriterion("t.method >=", value, "method");
            return (Criteria) this;
        }

        public Criteria andUpdateDateGreaterThanOrEqualTo(Date value) {
            addCriterion("t.updateDate >=", value, "updateDate");
            return (Criteria) this;
        }

        public Criteria andUpdateUserIdIsNotNull() {
            addCriterion("t.updateUserId is not null");
            return (Criteria) this;
        }

        public Criteria andMenu_flagNotIn(List<String> values) {
            addCriterion("t.menu_flag not in", values, "menu_flag");
            return (Criteria) this;
        }

        public Criteria andCreateDateLessThanOrEqualTo(Date value) {
            addCriterion("t.createDate <=", value, "createDate");
            return (Criteria) this;
        }

        public Criteria andOpen_flagLessThan(String value) {
            addCriterion("t.open_flag <", value, "open_flag");
            return (Criteria) this;
        }

        public Criteria andOpen_flagGreaterThanOrEqualTo(String value) {
            addCriterion("t.open_flag >=", value, "open_flag");
            return (Criteria) this;
        }

        public Criteria andBlank_flagNotIn(List<String> values) {
            addCriterion("t.blank_flag not in", values, "blank_flag");
            return (Criteria) this;
        }

        public Criteria andPermissionKeyIn(List<String> values) {
            addCriterion("t.permissionKey in", values, "permissionKey");
            return (Criteria) this;
        }

        public Criteria andIconEqualTo(String value) {
            addCriterion("t.icon =", value, "icon");
            return (Criteria) this;
        }

        public Criteria andUrlLessThanOrEqualTo(String value) {
            addCriterion("t.url <=", value, "url");
            return (Criteria) this;
        }

        public Criteria andParent_keyIn(List<String> values) {
            addCriterion("t.parent_key in", values, "parent_key");
            return (Criteria) this;
        }

        public Criteria andCreateDateIsNull() {
            addCriterion("t.createDate is null");
            return (Criteria) this;
        }

        public Criteria andSortLessThanOrEqualTo(Integer value) {
            addCriterion("t.sort <=", value, "sort");
            return (Criteria) this;
        }

        public Criteria andLevelIsNotNull() {
            addCriterion("t.level is not null");
            return (Criteria) this;
        }

        public Criteria andOpen_flagLikeInsensitive(String value) {
            addCriterion("upper(t.open_flag) like", value.toUpperCase(), "open_flag");
            return (Criteria) this;
        }

        public Criteria andUpdateDateIsNull() {
            addCriterion("t.updateDate is null");
            return (Criteria) this;
        }

        public Criteria andSortIsNotNull() {
            addCriterion("t.sort is not null");
            return (Criteria) this;
        }

        public Criteria andBlank_flagNotLike(String value) {
            addCriterion("t.blank_flag not like", value, "blank_flag");
            return (Criteria) this;
        }

        public Criteria andRemarkLessThan(String value) {
            addCriterion("t.remark <", value, "remark");
            return (Criteria) this;
        }

        public Criteria andParent_keyLike(String value) {
            addCriterion("t.parent_key like", value, "parent_key");
            return (Criteria) this;
        }

        public Criteria andParent_keyLikeInsensitive(String value) {
            addCriterion("upper(t.parent_key) like", value.toUpperCase(), "parent_key");
            return (Criteria) this;
        }

        public Criteria andMenu_flagLessThan(String value) {
            addCriterion("t.menu_flag <", value, "menu_flag");
            return (Criteria) this;
        }

        public Criteria andParent_keysIsNotNull() {
            addCriterion("t.parent_keys is not null");
            return (Criteria) this;
        }

        public Criteria andPermissionKeyNotLike(String value) {
            addCriterion("t.permissionKey not like", value, "permissionKey");
            return (Criteria) this;
        }

        public Criteria andUpdateDateNotBetween(Date value1, Date value2) {
            addCriterion("t.updateDate not between", value1, value2, "updateDate");
            return (Criteria) this;
        }

        public Criteria andParent_keyGreaterThanOrEqualTo(String value) {
            addCriterion("t.parent_key >=", value, "parent_key");
            return (Criteria) this;
        }

        public Criteria andCreateDateGreaterThanOrEqualTo(Date value) {
            addCriterion("t.createDate >=", value, "createDate");
            return (Criteria) this;
        }

        public Criteria andCreateUserIdLessThan(Integer value) {
            addCriterion("t.createUserId <", value, "createUserId");
            return (Criteria) this;
        }

        public Criteria andOpen_flagNotIn(List<String> values) {
            addCriterion("t.open_flag not in", values, "open_flag");
            return (Criteria) this;
        }

        public Criteria andPermission_idIn(List<Integer> values) {
            addCriterion("t.permission_id in", values, "permission_id");
            return (Criteria) this;
        }

        public Criteria andUpdateUserIdLessThan(Integer value) {
            addCriterion("t.updateUserId <", value, "updateUserId");
            return (Criteria) this;
        }

        public Criteria andParent_keyBetween(String value1, String value2) {
            addCriterion("t.parent_key between", value1, value2, "parent_key");
            return (Criteria) this;
        }

        public Criteria andCreateDateGreaterThan(Date value) {
            addCriterion("t.createDate >", value, "createDate");
            return (Criteria) this;
        }

        public Criteria andParent_keyEqualTo(String value) {
            addCriterion("t.parent_key =", value, "parent_key");
            return (Criteria) this;
        }

        public Criteria andStatusLessThan(String value) {
            addCriterion("t.status <", value, "status");
            return (Criteria) this;
        }

        public Criteria andPermissionNameGreaterThanOrEqualTo(String value) {
            addCriterion("t.permissionName >=", value, "permissionName");
            return (Criteria) this;
        }

        public Criteria andPermissionNameNotBetween(String value1, String value2) {
            addCriterion("t.permissionName not between", value1, value2, "permissionName");
            return (Criteria) this;
        }

        public Criteria andStatusGreaterThanOrEqualTo(String value) {
            addCriterion("t.status >=", value, "status");
            return (Criteria) this;
        }

        public Criteria andCreateUserIdIsNotNull() {
            addCriterion("t.createUserId is not null");
            return (Criteria) this;
        }

        public Criteria andUrlNotIn(List<String> values) {
            addCriterion("t.url not in", values, "url");
            return (Criteria) this;
        }

        public Criteria andLevelIsNull() {
            addCriterion("t.level is null");
            return (Criteria) this;
        }

        public Criteria andUpdateUserIdNotIn(List<Integer> values) {
            addCriterion("t.updateUserId not in", values, "updateUserId");
            return (Criteria) this;
        }

        public Criteria andStatusGreaterThan(String value) {
            addCriterion("t.status >", value, "status");
            return (Criteria) this;
        }

        public Criteria andPermission_idEqualTo(Integer value) {
            addCriterion("t.permission_id =", value, "permission_id");
            return (Criteria) this;
        }

        public Criteria andSortIsNull() {
            addCriterion("t.sort is null");
            return (Criteria) this;
        }

        public Criteria andParent_keysNotIn(List<String> values) {
            addCriterion("t.parent_keys not in", values, "parent_keys");
            return (Criteria) this;
        }

        public Criteria andCreateUserIdEqualTo(Integer value) {
            addCriterion("t.createUserId =", value, "createUserId");
            return (Criteria) this;
        }

        public Criteria andParent_keysLessThanOrEqualTo(String value) {
            addCriterion("t.parent_keys <=", value, "parent_keys");
            return (Criteria) this;
        }

        public Criteria andPermissionNameLessThan(String value) {
            addCriterion("t.permissionName <", value, "permissionName");
            return (Criteria) this;
        }

        public Criteria andCreateUserIdIsNull() {
            addCriterion("t.createUserId is null");
            return (Criteria) this;
        }

        public Criteria andCreateUserIdGreaterThanOrEqualTo(Integer value) {
            addCriterion("t.createUserId >=", value, "createUserId");
            return (Criteria) this;
        }

        public Criteria andParent_keysIn(List<String> values) {
            addCriterion("t.parent_keys in", values, "parent_keys");
            return (Criteria) this;
        }

        public Criteria andSortIn(List<Integer> values) {
            addCriterion("t.sort in", values, "sort");
            return (Criteria) this;
        }

        protected void addCriterion(String condition) {
            if (condition == null) {
                throw new RuntimeException("Value for condition cannot be null");
            }
            criteria.add(new Criterion(condition));
        }

        public Criteria andBlank_flagLessThan(String value) {
            addCriterion("t.blank_flag <", value, "blank_flag");
            return (Criteria) this;
        }

        public Criteria andPermission_idLessThanOrEqualTo(Integer value) {
            addCriterion("t.permission_id <=", value, "permission_id");
            return (Criteria) this;
        }

        public Criteria andMethodNotBetween(String value1, String value2) {
            addCriterion("t.method not between", value1, value2, "method");
            return (Criteria) this;
        }

        public Criteria andMethodEqualTo(String value) {
            addCriterion("t.method =", value, "method");
            return (Criteria) this;
        }

        public Criteria andOpen_flagBetween(String value1, String value2) {
            addCriterion("t.open_flag between", value1, value2, "open_flag");
            return (Criteria) this;
        }

        public Criteria andCreateUserIdNotEqualTo(Integer value) {
            addCriterion("t.createUserId <>", value, "createUserId");
            return (Criteria) this;
        }

        public Criteria andBlank_flagLessThanOrEqualTo(String value) {
            addCriterion("t.blank_flag <=", value, "blank_flag");
            return (Criteria) this;
        }

        public Criteria andUpdateUserIdGreaterThanOrEqualTo(Integer value) {
            addCriterion("t.updateUserId >=", value, "updateUserId");
            return (Criteria) this;
        }

        public Criteria andPermission_idIsNotNull() {
            addCriterion("t.permission_id is not null");
            return (Criteria) this;
        }

        public Criteria andSortEqualTo(Integer value) {
            addCriterion("t.sort =", value, "sort");
            return (Criteria) this;
        }

        public Criteria andMenu_flagLike(String value) {
            addCriterion("t.menu_flag like", value, "menu_flag");
            return (Criteria) this;
        }

        public Criteria andRemarkNotLike(String value) {
            addCriterion("t.remark not like", value, "remark");
            return (Criteria) this;
        }

        public Criteria andUpdateDateNotIn(List<Date> values) {
            addCriterion("t.updateDate not in", values, "updateDate");
            return (Criteria) this;
        }

        public Criteria andCreateUserIdGreaterThan(Integer value) {
            addCriterion("t.createUserId >", value, "createUserId");
            return (Criteria) this;
        }

        protected void addCriterion(String condition, Object value1, Object value2, String property) {
            if (value1 == null || value2 == null) {
                throw new RuntimeException("Between values for " + property + " cannot be null");
            }
            criteria.add(new Criterion(condition, value1, value2));
        }

        public Criteria andSortNotEqualTo(Integer value) {
            addCriterion("t.sort <>", value, "sort");
            return (Criteria) this;
        }

        public Criteria andStatusNotLike(String value) {
            addCriterion("t.status not like", value, "status");
            return (Criteria) this;
        }

        public Criteria andBlank_flagLikeInsensitive(String value) {
            addCriterion("upper(t.blank_flag) like", value.toUpperCase(), "blank_flag");
            return (Criteria) this;
        }

        public Criteria andRemarkLike(String value) {
            addCriterion("t.remark like", value, "remark");
            return (Criteria) this;
        }

        public Criteria andUpdateDateEqualTo(Date value) {
            addCriterion("t.updateDate =", value, "updateDate");
            return (Criteria) this;
        }

        public Criteria andOpen_flagEqualTo(String value) {
            addCriterion("t.open_flag =", value, "open_flag");
            return (Criteria) this;
        }

        public Criteria andPermissionNameNotIn(List<String> values) {
            addCriterion("t.permissionName not in", values, "permissionName");
            return (Criteria) this;
        }

        public Criteria andMenu_flagNotEqualTo(String value) {
            addCriterion("t.menu_flag <>", value, "menu_flag");
            return (Criteria) this;
        }

        public Criteria andRemarkLikeInsensitive(String value) {
            addCriterion("upper(t.remark) like", value.toUpperCase(), "remark");
            return (Criteria) this;
        }

        public Criteria andRemarkGreaterThan(String value) {
            addCriterion("t.remark >", value, "remark");
            return (Criteria) this;
        }

        public Criteria andUpdateDateNotEqualTo(Date value) {
            addCriterion("t.updateDate <>", value, "updateDate");
            return (Criteria) this;
        }

        public Criteria andRemarkIsNull() {
            addCriterion("t.remark is null");
            return (Criteria) this;
        }

        public Criteria andStatusLike(String value) {
            addCriterion("t.status like", value, "status");
            return (Criteria) this;
        }

        public Criteria andPermission_idNotIn(List<Integer> values) {
            addCriterion("t.permission_id not in", values, "permission_id");
            return (Criteria) this;
        }

        public Criteria andIconLikeInsensitive(String value) {
            addCriterion("upper(t.icon) like", value.toUpperCase(), "icon");
            return (Criteria) this;
        }

        public Criteria andUpdateDateIsNotNull() {
            addCriterion("t.updateDate is not null");
            return (Criteria) this;
        }

        public Criteria andIconGreaterThan(String value) {
            addCriterion("t.icon >", value, "icon");
            return (Criteria) this;
        }

        public Criteria andParent_keysNotEqualTo(String value) {
            addCriterion("t.parent_keys <>", value, "parent_keys");
            return (Criteria) this;
        }

        public Criteria andIconNotLike(String value) {
            addCriterion("t.icon not like", value, "icon");
            return (Criteria) this;
        }

        public Criteria andMenu_flagLessThanOrEqualTo(String value) {
            addCriterion("t.menu_flag <=", value, "menu_flag");
            return (Criteria) this;
        }

        public Criteria andPermissionNameEqualTo(String value) {
            addCriterion("t.permissionName =", value, "permissionName");
            return (Criteria) this;
        }

        public Criteria andIconIsNotNull() {
            addCriterion("t.icon is not null");
            return (Criteria) this;
        }

        public Criteria andMethodIsNotNull() {
            addCriterion("t.method is not null");
            return (Criteria) this;
        }

        public Criteria andRemarkNotEqualTo(String value) {
            addCriterion("t.remark <>", value, "remark");
            return (Criteria) this;
        }

        public Criteria andPermissionNameNotEqualTo(String value) {
            addCriterion("t.permissionName <>", value, "permissionName");
            return (Criteria) this;
        }

        public Criteria andBlank_flagIsNotNull() {
            addCriterion("t.blank_flag is not null");
            return (Criteria) this;
        }

        public Criteria andUrlEqualTo(String value) {
            addCriterion("t.url =", value, "url");
            return (Criteria) this;
        }

        public Criteria andIconBetween(String value1, String value2) {
            addCriterion("t.icon between", value1, value2, "icon");
            return (Criteria) this;
        }

        public Criteria andPermissionKeyGreaterThanOrEqualTo(String value) {
            addCriterion("t.permissionKey >=", value, "permissionKey");
            return (Criteria) this;
        }

        public Criteria andUrlIsNotNull() {
            addCriterion("t.url is not null");
            return (Criteria) this;
        }

        public Criteria andSortLessThan(Integer value) {
            addCriterion("t.sort <", value, "sort");
            return (Criteria) this;
        }

        public Criteria andUrlLikeInsensitive(String value) {
            addCriterion("upper(t.url) like", value.toUpperCase(), "url");
            return (Criteria) this;
        }

        public Criteria andPermission_idBetween(Integer value1, Integer value2) {
            addCriterion("t.permission_id between", value1, value2, "permission_id");
            return (Criteria) this;
        }

        public Criteria andBlank_flagBetween(String value1, String value2) {
            addCriterion("t.blank_flag between", value1, value2, "blank_flag");
            return (Criteria) this;
        }

        public Criteria andOpen_flagNotBetween(String value1, String value2) {
            addCriterion("t.open_flag not between", value1, value2, "open_flag");
            return (Criteria) this;
        }

        public Criteria andMenu_flagEqualTo(String value) {
            addCriterion("t.menu_flag =", value, "menu_flag");
            return (Criteria) this;
        }

        public Criteria andLevelIn(List<Integer> values) {
            addCriterion("t.level in", values, "level");
            return (Criteria) this;
        }

        public Criteria andUpdateUserIdGreaterThan(Integer value) {
            addCriterion("t.updateUserId >", value, "updateUserId");
            return (Criteria) this;
        }

        public Criteria andPermission_idLessThan(Integer value) {
            addCriterion("t.permission_id <", value, "permission_id");
            return (Criteria) this;
        }

        public Criteria andCreateDateIsNotNull() {
            addCriterion("t.createDate is not null");
            return (Criteria) this;
        }

        public Criteria andUrlBetween(String value1, String value2) {
            addCriterion("t.url between", value1, value2, "url");
            return (Criteria) this;
        }

        public Criteria andRemarkBetween(String value1, String value2) {
            addCriterion("t.remark between", value1, value2, "remark");
            return (Criteria) this;
        }

        public Criteria andRemarkLessThanOrEqualTo(String value) {
            addCriterion("t.remark <=", value, "remark");
            return (Criteria) this;
        }

        public Criteria andUpdateDateLessThanOrEqualTo(Date value) {
            addCriterion("t.updateDate <=", value, "updateDate");
            return (Criteria) this;
        }

        public Criteria andSortNotIn(List<Integer> values) {
            addCriterion("t.sort not in", values, "sort");
            return (Criteria) this;
        }

        public Criteria andMethodIn(List<String> values) {
            addCriterion("t.method in", values, "method");
            return (Criteria) this;
        }

        public Criteria andPermissionKeyGreaterThan(String value) {
            addCriterion("t.permissionKey >", value, "permissionKey");
            return (Criteria) this;
        }

        public Criteria andMethodGreaterThan(String value) {
            addCriterion("t.method >", value, "method");
            return (Criteria) this;
        }

        public Criteria andCreateUserIdLessThanOrEqualTo(Integer value) {
            addCriterion("t.createUserId <=", value, "createUserId");
            return (Criteria) this;
        }

        public Criteria andBlank_flagIsNull() {
            addCriterion("t.blank_flag is null");
            return (Criteria) this;
        }

        public Criteria andIconLessThanOrEqualTo(String value) {
            addCriterion("t.icon <=", value, "icon");
            return (Criteria) this;
        }

        public Criteria andStatusLikeInsensitive(String value) {
            addCriterion("upper(t.status) like", value.toUpperCase(), "status");
            return (Criteria) this;
        }

        public Criteria andLevelEqualTo(Integer value) {
            addCriterion("t.level =", value, "level");
            return (Criteria) this;
        }

        public Criteria andParent_keyNotIn(List<String> values) {
            addCriterion("t.parent_key not in", values, "parent_key");
            return (Criteria) this;
        }

        public Criteria andIconNotBetween(String value1, String value2) {
            addCriterion("t.icon not between", value1, value2, "icon");
            return (Criteria) this;
        }

        public Criteria andUrlNotBetween(String value1, String value2) {
            addCriterion("t.url not between", value1, value2, "url");
            return (Criteria) this;
        }

        public Criteria andPermissionKeyLike(String value) {
            addCriterion("t.permissionKey like", value, "permissionKey");
            return (Criteria) this;
        }

        public Criteria andCreateDateEqualTo(Date value) {
            addCriterion("t.createDate =", value, "createDate");
            return (Criteria) this;
        }

        public Criteria andParent_keyIsNull() {
            addCriterion("t.parent_key is null");
            return (Criteria) this;
        }

        public Criteria andPermissionKeyLessThan(String value) {
            addCriterion("t.permissionKey <", value, "permissionKey");
            return (Criteria) this;
        }

        public Criteria andParent_keyLessThan(String value) {
            addCriterion("t.parent_key <", value, "parent_key");
            return (Criteria) this;
        }

        public Criteria andMenu_flagIsNull() {
            addCriterion("t.menu_flag is null");
            return (Criteria) this;
        }

        public Criteria andParent_keyNotLike(String value) {
            addCriterion("t.parent_key not like", value, "parent_key");
            return (Criteria) this;
        }

        public Criteria andParent_keysGreaterThanOrEqualTo(String value) {
            addCriterion("t.parent_keys >=", value, "parent_keys");
            return (Criteria) this;
        }

        public Criteria andCreateDateBetween(Date value1, Date value2) {
            addCriterion("t.createDate between", value1, value2, "createDate");
            return (Criteria) this;
        }

        public Criteria andUpdateDateBetween(Date value1, Date value2) {
            addCriterion("t.updateDate between", value1, value2, "updateDate");
            return (Criteria) this;
        }

        public Criteria andPermissionKeyLessThanOrEqualTo(String value) {
            addCriterion("t.permissionKey <=", value, "permissionKey");
            return (Criteria) this;
        }

        public Criteria andStatusNotIn(List<String> values) {
            addCriterion("t.status not in", values, "status");
            return (Criteria) this;
        }

        public Criteria andPermission_idGreaterThan(Integer value) {
            addCriterion("t.permission_id >", value, "permission_id");
            return (Criteria) this;
        }

        public Criteria andSortGreaterThanOrEqualTo(Integer value) {
            addCriterion("t.sort >=", value, "sort");
            return (Criteria) this;
        }

        public Criteria andUrlGreaterThanOrEqualTo(String value) {
            addCriterion("t.url >=", value, "url");
            return (Criteria) this;
        }

        public Criteria andIconLike(String value) {
            addCriterion("t.icon like", value, "icon");
            return (Criteria) this;
        }

        public Criteria andLevelLessThan(Integer value) {
            addCriterion("t.level <", value, "level");
            return (Criteria) this;
        }

        public Criteria andUpdateDateGreaterThan(Date value) {
            addCriterion("t.updateDate >", value, "updateDate");
            return (Criteria) this;
        }

        public Criteria andCreateDateLessThan(Date value) {
            addCriterion("t.createDate <", value, "createDate");
            return (Criteria) this;
        }

        public Criteria andMethodNotLike(String value) {
            addCriterion("t.method not like", value, "method");
            return (Criteria) this;
        }

        public Criteria andMenu_flagIsNotNull() {
            addCriterion("t.menu_flag is not null");
            return (Criteria) this;
        }

        public Criteria andUrlIn(List<String> values) {
            addCriterion("t.url in", values, "url");
            return (Criteria) this;
        }

        public Criteria andMenu_flagGreaterThan(String value) {
            addCriterion("t.menu_flag >", value, "menu_flag");
            return (Criteria) this;
        }

        public Criteria andOpen_flagLike(String value) {
            addCriterion("t.open_flag like", value, "open_flag");
            return (Criteria) this;
        }

        public Criteria andStatusBetween(String value1, String value2) {
            addCriterion("t.status between", value1, value2, "status");
            return (Criteria) this;
        }

        public Criteria andIconIn(List<String> values) {
            addCriterion("t.icon in", values, "icon");
            return (Criteria) this;
        }

        public Criteria andBlank_flagGreaterThan(String value) {
            addCriterion("t.blank_flag >", value, "blank_flag");
            return (Criteria) this;
        }

        public Criteria andParent_keysLikeInsensitive(String value) {
            addCriterion("upper(t.parent_keys) like", value.toUpperCase(), "parent_keys");
            return (Criteria) this;
        }

        public Criteria andOpen_flagIn(List<String> values) {
            addCriterion("t.open_flag in", values, "open_flag");
            return (Criteria) this;
        }

        public Criteria andMenu_flagNotBetween(String value1, String value2) {
            addCriterion("t.menu_flag not between", value1, value2, "menu_flag");
            return (Criteria) this;
        }

        public Criteria andParent_keysLessThan(String value) {
            addCriterion("t.parent_keys <", value, "parent_keys");
            return (Criteria) this;
        }

        public Criteria andUrlNotLike(String value) {
            addCriterion("t.url not like", value, "url");
            return (Criteria) this;
        }

        public Criteria andOpen_flagNotLike(String value) {
            addCriterion("t.open_flag not like", value, "open_flag");
            return (Criteria) this;
        }

        public Criteria andMethodLikeInsensitive(String value) {
            addCriterion("upper(t.method) like", value.toUpperCase(), "method");
            return (Criteria) this;
        }

        public Criteria andSortGreaterThan(Integer value) {
            addCriterion("t.sort >", value, "sort");
            return (Criteria) this;
        }

        public Criteria andMethodLike(String value) {
            addCriterion("t.method like", value, "method");
            return (Criteria) this;
        }

        public Criteria andUpdateUserIdIsNull() {
            addCriterion("t.updateUserId is null");
            return (Criteria) this;
        }

        public Criteria andPermissionNameIsNotNull() {
            addCriterion("t.permissionName is not null");
            return (Criteria) this;
        }

        public Criteria andParent_keysBetween(String value1, String value2) {
            addCriterion("t.parent_keys between", value1, value2, "parent_keys");
            return (Criteria) this;
        }

        public Criteria andRemarkIn(List<String> values) {
            addCriterion("t.remark in", values, "remark");
            return (Criteria) this;
        }

        public Criteria andPermissionNameLessThanOrEqualTo(String value) {
            addCriterion("t.permissionName <=", value, "permissionName");
            return (Criteria) this;
        }

        public boolean isValid() {
            return criteria.size() > 0;
        }

        public Criteria andMethodBetween(String value1, String value2) {
            addCriterion("t.method between", value1, value2, "method");
            return (Criteria) this;
        }

        public Criteria andLevelBetween(Integer value1, Integer value2) {
            addCriterion("t.level between", value1, value2, "level");
            return (Criteria) this;
        }

        public Criteria andParent_keysEqualTo(String value) {
            addCriterion("t.parent_keys =", value, "parent_keys");
            return (Criteria) this;
        }

        public Criteria andIconGreaterThanOrEqualTo(String value) {
            addCriterion("t.icon >=", value, "icon");
            return (Criteria) this;
        }

        public Criteria andMethodNotEqualTo(String value) {
            addCriterion("t.method <>", value, "method");
            return (Criteria) this;
        }

        public Criteria andPermissionKeyIsNull() {
            addCriterion("t.permissionKey is null");
            return (Criteria) this;
        }

        public Criteria andOpen_flagLessThanOrEqualTo(String value) {
            addCriterion("t.open_flag <=", value, "open_flag");
            return (Criteria) this;
        }

        public Criteria andMenu_flagIn(List<String> values) {
            addCriterion("t.menu_flag in", values, "menu_flag");
            return (Criteria) this;
        }

        public Criteria andUrlNotEqualTo(String value) {
            addCriterion("t.url <>", value, "url");
            return (Criteria) this;
        }

        public Criteria andOpen_flagGreaterThan(String value) {
            addCriterion("t.open_flag >", value, "open_flag");
            return (Criteria) this;
        }

        public Criteria andUpdateUserIdNotBetween(Integer value1, Integer value2) {
            addCriterion("t.updateUserId not between", value1, value2, "updateUserId");
            return (Criteria) this;
        }

        public Criteria andOpen_flagIsNull() {
            addCriterion("t.open_flag is null");
            return (Criteria) this;
        }

        public Criteria andOpen_flagNotEqualTo(String value) {
            addCriterion("t.open_flag <>", value, "open_flag");
            return (Criteria) this;
        }

        public Criteria andPermissionNameNotLike(String value) {
            addCriterion("t.permissionName not like", value, "permissionName");
            return (Criteria) this;
        }

        public Criteria andPermissionKeyLikeInsensitive(String value) {
            addCriterion("upper(t.permissionKey) like", value.toUpperCase(), "permissionKey");
            return (Criteria) this;
        }

        public Criteria andUrlGreaterThan(String value) {
            addCriterion("t.url >", value, "url");
            return (Criteria) this;
        }

        public Criteria andCreateDateIn(List<Date> values) {
            addCriterion("t.createDate in", values, "createDate");
            return (Criteria) this;
        }

        public Criteria andStatusIn(List<String> values) {
            addCriterion("t.status in", values, "status");
            return (Criteria) this;
        }

        public Criteria andMethodLessThanOrEqualTo(String value) {
            addCriterion("t.method <=", value, "method");
            return (Criteria) this;
        }

        public Criteria andParent_keysGreaterThan(String value) {
            addCriterion("t.parent_keys >", value, "parent_keys");
            return (Criteria) this;
        }

        public Criteria andBlank_flagEqualTo(String value) {
            addCriterion("t.blank_flag =", value, "blank_flag");
            return (Criteria) this;
        }

        public Criteria andStatusLessThanOrEqualTo(String value) {
            addCriterion("t.status <=", value, "status");
            return (Criteria) this;
        }

        public Criteria andLevelGreaterThanOrEqualTo(Integer value) {
            addCriterion("t.level >=", value, "level");
            return (Criteria) this;
        }

        public Criteria andRemarkNotIn(List<String> values) {
            addCriterion("t.remark not in", values, "remark");
            return (Criteria) this;
        }

        public Criteria andPermission_idGreaterThanOrEqualTo(Integer value) {
            addCriterion("t.permission_id >=", value, "permission_id");
            return (Criteria) this;
        }

        public Criteria andPermissionKeyBetween(String value1, String value2) {
            addCriterion("t.permissionKey between", value1, value2, "permissionKey");
            return (Criteria) this;
        }

        public Criteria andBlank_flagGreaterThanOrEqualTo(String value) {
            addCriterion("t.blank_flag >=", value, "blank_flag");
            return (Criteria) this;
        }

        public Criteria andUpdateUserIdLessThanOrEqualTo(Integer value) {
            addCriterion("t.updateUserId <=", value, "updateUserId");
            return (Criteria) this;
        }

        public Criteria andMenu_flagNotLike(String value) {
            addCriterion("t.menu_flag not like", value, "menu_flag");
            return (Criteria) this;
        }

        public Criteria andPermissionNameIn(List<String> values) {
            addCriterion("t.permissionName in", values, "permissionName");
            return (Criteria) this;
        }

        public List<Criterion> getAllCriteria() {
            return criteria;
        }

        public Criteria andPermission_idIsNull() {
            addCriterion("t.permission_id is null");
            return (Criteria) this;
        }

        public Criteria andParent_keyNotEqualTo(String value) {
            addCriterion("t.parent_key <>", value, "parent_key");
            return (Criteria) this;
        }

        public Criteria andSortBetween(Integer value1, Integer value2) {
            addCriterion("t.sort between", value1, value2, "sort");
            return (Criteria) this;
        }

        public Criteria andRemarkNotBetween(String value1, String value2) {
            addCriterion("t.remark not between", value1, value2, "remark");
            return (Criteria) this;
        }

        public Criteria andCreateUserIdNotBetween(Integer value1, Integer value2) {
            addCriterion("t.createUserId not between", value1, value2, "createUserId");
            return (Criteria) this;
        }

        public Criteria andPermission_idNotEqualTo(Integer value) {
            addCriterion("t.permission_id <>", value, "permission_id");
            return (Criteria) this;
        }

        public Criteria andPermissionKeyNotEqualTo(String value) {
            addCriterion("t.permissionKey <>", value, "permissionKey");
            return (Criteria) this;
        }

        public Criteria andIconNotIn(List<String> values) {
            addCriterion("t.icon not in", values, "icon");
            return (Criteria) this;
        }

        public Criteria andPermissionKeyIsNotNull() {
            addCriterion("t.permissionKey is not null");
            return (Criteria) this;
        }

        public Criteria andPermission_idNotBetween(Integer value1, Integer value2) {
            addCriterion("t.permission_id not between", value1, value2, "permission_id");
            return (Criteria) this;
        }

        public Criteria andLevelNotIn(List<Integer> values) {
            addCriterion("t.level not in", values, "level");
            return (Criteria) this;
        }

        public Criteria andMenu_flagGreaterThanOrEqualTo(String value) {
            addCriterion("t.menu_flag >=", value, "menu_flag");
            return (Criteria) this;
        }

        public Criteria andUpdateUserIdEqualTo(Integer value) {
            addCriterion("t.updateUserId =", value, "updateUserId");
            return (Criteria) this;
        }

        public Criteria andOpen_flagIsNotNull() {
            addCriterion("t.open_flag is not null");
            return (Criteria) this;
        }

        public Criteria andPermissionNameGreaterThan(String value) {
            addCriterion("t.permissionName >", value, "permissionName");
            return (Criteria) this;
        }

        public Criteria andCreateDateNotIn(List<Date> values) {
            addCriterion("t.createDate not in", values, "createDate");
            return (Criteria) this;
        }

        public Criteria andMethodLessThan(String value) {
            addCriterion("t.method <", value, "method");
            return (Criteria) this;
        }

        public Criteria andRemarkGreaterThanOrEqualTo(String value) {
            addCriterion("t.remark >=", value, "remark");
            return (Criteria) this;
        }

        public Criteria andParent_keyIsNotNull() {
            addCriterion("t.parent_key is not null");
            return (Criteria) this;
        }

        public Criteria andUrlLike(String value) {
            addCriterion("t.url like", value, "url");
            return (Criteria) this;
        }

        public Criteria andUpdateUserIdBetween(Integer value1, Integer value2) {
            addCriterion("t.updateUserId between", value1, value2, "updateUserId");
            return (Criteria) this;
        }

        public Criteria andPermissionNameLike(String value) {
            addCriterion("t.permissionName like", value, "permissionName");
            return (Criteria) this;
        }

        public Criteria andParent_keysIsNull() {
            addCriterion("t.parent_keys is null");
            return (Criteria) this;
        }

        public Criteria andParent_keyLessThanOrEqualTo(String value) {
            addCriterion("t.parent_key <=", value, "parent_key");
            return (Criteria) this;
        }

        public Criteria andPermissionKeyEqualTo(String value) {
            addCriterion("t.permissionKey =", value, "permissionKey");
            return (Criteria) this;
        }

        public Criteria andIconNotEqualTo(String value) {
            addCriterion("t.icon <>", value, "icon");
            return (Criteria) this;
        }

        public Criteria andBlank_flagNotEqualTo(String value) {
            addCriterion("t.blank_flag <>", value, "blank_flag");
            return (Criteria) this;
        }

        public Criteria andBlank_flagIn(List<String> values) {
            addCriterion("t.blank_flag in", values, "blank_flag");
            return (Criteria) this;
        }

        public Criteria andPermissionKeyNotIn(List<String> values) {
            addCriterion("t.permissionKey not in", values, "permissionKey");
            return (Criteria) this;
        }

        public Criteria andRemarkEqualTo(String value) {
            addCriterion("t.remark =", value, "remark");
            return (Criteria) this;
        }

        public Criteria andMenu_flagLikeInsensitive(String value) {
            addCriterion("upper(t.menu_flag) like", value.toUpperCase(), "menu_flag");
            return (Criteria) this;
        }

        public Criteria andMethodIsNull() {
            addCriterion("t.method is null");
            return (Criteria) this;
        }

        public Criteria andMethodNotIn(List<String> values) {
            addCriterion("t.method not in", values, "method");
            return (Criteria) this;
        }

        public Criteria andStatusEqualTo(String value) {
            addCriterion("t.status =", value, "status");
            return (Criteria) this;
        }

        public Criteria andBlank_flagNotBetween(String value1, String value2) {
            addCriterion("t.blank_flag not between", value1, value2, "blank_flag");
            return (Criteria) this;
        }

        public Criteria andStatusIsNotNull() {
            addCriterion("t.status is not null");
            return (Criteria) this;
        }

        public Criteria andParent_keysNotBetween(String value1, String value2) {
            addCriterion("t.parent_keys not between", value1, value2, "parent_keys");
            return (Criteria) this;
        }

        public Criteria andUpdateUserIdNotEqualTo(Integer value) {
            addCriterion("t.updateUserId <>", value, "updateUserId");
            return (Criteria) this;
        }

        public Criteria andStatusIsNull() {
            addCriterion("t.status is null");
            return (Criteria) this;
        }

        public Criteria andUpdateDateLessThan(Date value) {
            addCriterion("t.updateDate <", value, "updateDate");
            return (Criteria) this;
        }

        public Criteria andLevelNotEqualTo(Integer value) {
            addCriterion("t.level <>", value, "level");
            return (Criteria) this;
        }
    }

    /**
     * @mbg.generated Mon Jul 08 15:06:42 CST 2019
     */
    public static class Criterion {

        protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
            super();
            this.condition = condition;
            this.value = value;
            this.secondValue = secondValue;
            this.typeHandler = typeHandler;
            this.betweenValue = true;
        }

        protected Criterion(String condition, Object value) {
            this(condition, value, null);
        }

        protected Criterion(String condition, Object value, Object secondValue) {
            this(condition, value, secondValue, null);
        }

        protected Criterion(String condition) {
            super();
            this.condition = condition;
            this.typeHandler = null;
            this.noValue = true;
        }

        protected Criterion(String condition, Object value, String typeHandler) {
            super();
            this.condition = condition;
            this.value = value;
            this.typeHandler = typeHandler;
            if (value instanceof List<?>) {
                this.listValue = true;
            } else {
                this.singleValue = true;
            }
        }

        private String condition;

        private boolean singleValue;

        private boolean noValue;

        private Object secondValue;

        private Object value;

        private String typeHandler;

        private boolean betweenValue;

        private boolean listValue;

        public boolean isSingleValue() {
            return singleValue;
        }

        public String getCondition() {
            return condition;
        }

        public String getTypeHandler() {
            return typeHandler;
        }

        public boolean isListValue() {
            return listValue;
        }

        public Object getSecondValue() {
            return secondValue;
        }

        public boolean isBetweenValue() {
            return betweenValue;
        }

        public boolean isNoValue() {
            return noValue;
        }

        public Object getValue() {
            return value;
        }
    }
}
